转:C++之父Bjarne Stroustrup:面向对象的进化与实现

如果Bjarne Stroustrup从A&M大学工程学院离职,他的简历上只需一句话就会有一群顶级软件公司向他抛出橄榄枝:“Bjarne Stroustrup,C++编程语言的发明者”。

Bjarne 1950年出生在丹麦,对于软件开发界,丹麦不仅是一个童话王国,还是群星闪耀大师频出的地方。Delphi和C#之父Anders、Ruby on Rails创始人DHH都是丹麦人。1975年,Bjane获得丹麦奥胡斯大学的数学和计算机科学硕士学位,又于1979年获得英国剑桥大学的计算机科学博士学位。

贝尔实验室

此后20余年,Bjarne一直就职于贝尔实验室Large-scale Programming(大型程序设计研究部)实验室。贝尔实验室的工作可以大致分为三个类别:基础研究,系统工程和应用开发。Bjarne就职于开发部门,这是贝尔实验室最大的部门,负责设计构成贝尔系统电信网络的设备和软件。

C++之父Bjarne Stroustrup

这是一段难得的经历。上世纪七八十年代,贝尔实验室一直站在计算机科学和应用软件开发的前沿,C++之前,这里是Unix系统和C语言的发源地。

1970年,在贝尔实验室工作的Unix之父Ken Thompson将BCPL语言(BCPL是剑桥大学1963年改造自ALGOL 60的语言)进行了修改,Ken Thompson为它起了一个有趣的名字“B语言”,并用B语言写了第一个UNIX操作系统。

1972年,贝尔实验室的D.M.Ritchie在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。

自1978年贝尔实验室正式发布C语言以来,C以简洁紧凑的风格,面向过程的编程方式,丰富的数据结构和强大的底层控制能力获得迅速发展。到上世纪80年代,C语言已经成为最受欢迎的编程语言;许多著名的系统软件, 如DBASE Ⅲ PLUS、DBASE Ⅳ 都是由C 语言编写的。

作为贝尔实验室开发部门的架构师,Bjarne体会到科学的严禁和苛刻,见证了C语言诞生和繁盛的过程;更重要的是,他感受到一门编程语言不仅对项目组的内部工作起到作用,对整个软件开发界甚至IT产业,都产生推动作用。

面向对象的进化与实现

“没有银弹”。C语言当然也存在一些自身无法解决的问题。C语言的缺点主要表现在数据的封装性上,这一点使得C在数据的安全性上有很大缺陷;C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握;此外,作为C语言的一大特色,指针可以说是C语言优于其它高级语言的一个重要原因。就是因为它有指针,可以直接进行靠近硬件的操作,但是C的指针操作也给它带来了很多不安全的因素。

除了上述原因,现实世界的业务需求也在随着IT业的发展发生着翻天覆地的变化。人们需要新的软件分析和实现方法;此外,对于开发人员,他们一直被软件开发的效率问题困扰,软件如何得到更好更高效的维护?如何让已有资源的得到更好的复用?

答案是面向对象。面向对象程序设计在某种程度上通过强调可重复性解决了这一问题。向对象程序设计可以被视作一种在程序中包含各种独立而又互相调用的单位和对象的思想,这与传统的思想刚好相反:传统的程序设计主张将程序看作一系列函数的集合,或者直接就是一系列对电脑下达的指令。面向对象程序设计中的每一个对象都应该能够接受数据、处理数据并将数据传达给其它对象,因此它们都可以被看作一个小型的“机器”,或者说是负有责任的角色。

C With Class

问题是,这项理论在实际的应用开发中,只有70年代的Smalltalk语言能够通过内建的功能支持(30年后的今天依然将Smalltalk视为面向对象语言的基础);现有的主流编程语言在设计和实现方法上都倾向于过程和函数,底层的编译器无法解释对象这一概念。

Bjarne在上世纪80年代初期在C语言的基础上,实现了内建支持面向对象程序设计方法的C with Classes。一开始C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。虚函数(virtual function)、运算符重载(operator overloading)、多重继承(multiple inheritance)、模板(template)、异常(exception)、RTTI、命名空间(name space)逐渐被加入标准。

80年代末,C++开始以一门面向对象语言的高级语言的独立姿态出现在程序员面前,大家被面向对象的编程思想打动,发现原来需求中的问题可以如此脉络清晰,程序设计也可以如此简单高效;更重要的是,C++在效率和平台方面并不比C差(C++与C的效率往往相差在正负5%之间,有人认为在大多数场合C++ 完全可以取代C语言)。面向对象的编程思想开始席卷整个开发领域,标准模板库(STL)和微软的VC++平台推波助澜,C++开始流行起来。

经过十年的发展,1998年C++标准委员会成立,国际标准组织(ISO)在这一年颁布了C++程序设计语言的国际标准ISO/IEC 1488-1998。C++成为具有国际标准的编程语言,通常称作ANSI/ISO C++。1998年是C++标准委员会成立的第一年,以后每5年视实际需要更新一次标准。

作为20年盛行不衰的一门编程语言,C++目前还占据这编程语言排行榜前三名的位置。Bjarne Stroustrup写下了它的早期定义并做出了首个实现,在C++流行之前,Bjarne选择制定了C++的设计标准,设计了C++主要的辅助支持环境,而且负责处理C++标准委员会的扩展提案。

而C++对整个软件开发及IT业的贡献,不言而喻。凭借这些突出的贡献,Bjarne Stroustrup获得了众多赞誉和奖项:

1990年,Bjarne荣获《财富》杂志评选的“美国12位最年轻的科学家”称号。

1993年,由于在C++领域的重大贡献,Bjarne获得了ACM该年度的 Grace Murray Hopper大奖并成为ACM院士(成立于1947年的ACM协会是历史最悠久、目前世界上最大的教育和科学计算协会,成为ACM院士是个人成就的里程碑)。

1995年,BYTE杂志颁予他“近20年来计算机工业最具影响力的20人”的称号。

目前,C++仍在它所擅长的领域发挥着不可或缺的作用。作为C++之父,Bjarne Stroustrup仍致力于C++标准的改进和推广,其著作《C++编程语言》、《C++的设计和演化》和《C++加注参考手册》等已成为C++学习的经典读物。
<完>